d0131e9a0a71c741ca860a0fead3e512f23e622f,platform/lang-impl/src/com/intellij/psi/impl/DebugUtil.java,DebugUtil,trackInvalidation,#PsiElement#Processor#,477

Before Change


  public static void trackInvalidation(@NotNull PsiElement element, @NotNull Processor<PsiElement> callback) {
    final ASTNode node = element.getNode();
    if (node != null) {
      node.putUserData(TRACK_INVALIDATION_KEY, callback);
    }
  }

After Change


    synchronized (element) {
      final ASTNode node = element.getNode();
      if (node == null) return;
      List<Pair<Object, Processor<PsiElement>>> callbacks = node.getUserData(TRACK_INVALIDATION_KEY);
      if (callbacks == null) {
        callbacks = new SmartList<Pair<Object, Processor<PsiElement>>>();
        node.putUserData(TRACK_INVALIDATION_KEY, callbacks);
      }
      for (int i = 0; i < callbacks.size(); i++) {
        Pair<Object, Processor<PsiElement>> pair = callbacks.get(i);